package com.zrrd.zuo.bag;

/**
 * @author ywb
 * @Description:
 * @date 2023/4/18 23:59
 */
//纸牌从左往右，每个人都会拿最有利的情况 问最多多少分 只能拿两端的牌
public class CardInLine {
    public static int win1(int[] arr){
        if (arr == null || arr.length == 0) {
            return 0;
        }
        return Math.max(f(arr,0,arr.length-1),s(arr,0,arr.length-1));
    }
    //L-R先手分数
    public static int f(int[] arr,int L,int R){
        if(L==R){
            return arr[L];
        }
        return Math.max(arr[L] + s(arr,L +1,R),arr[R] + s(arr,L,R-1));
    }
    //L-R后手分数
    public static int s(int[] arr,int L,int R){
        if(L==R){
            return 0;
        }
        return Math.min(f(arr,L+1,R),arr[R] + f(arr,L,R-1));
    }
    public static void main(String[] args) {
        int[] arr = { 5, 7, 4, 5, 8, 1, 6, 0, 3, 4, 6, 1, 7 };
        System.out.println(win1(arr));


    }
}
